/**
 *登录认证
 *模块权限控制
 */

define(function (require, exports, module) {
    var tpl = SGIS.Util.template(
            " <div class='module' id='{{id}}'>  "+
            "     <p class='{{out}}' style='text-align: center;width: 100%;height: 50px;margin: auto;line-height:40px;font-size: 16px;background:url(assets/images/module/titlebak.png) center top / 100% 100% no-repeat;'>{{name}}</p> "+
        "     <a class='module moduleimg {{id}} {{out}}' goto='{{goto}}' schema='{{schema}}' power='{{power}}' module='{{id}}' src='{{url}}' href='javascript:;' title='{{name}}'></a>  "+        
        " </div>"
    );

    var gallery_url = window.login_url.gallery_url+ "/gallery2.1/gallery/sgis/auto/login";
    var gallery_logouturl = window.login_url.gallery_url+ "/gallery2.1/user/logout";
    var userinfo = null;//保存用户信息
    var modulesPowers = null;//系统功能模块
    var UI = (function () {
        //登陆后界面控制
        var loginUI = function (user) {
            $('.theme-popover-mask').fadeOut(100);
            $('.theme-popover').slideUp(200);

            $("#user .aft").removeClass("hide");
            $("#user .bef").addClass("hide");
            $("#userName").text(user.userCaption);

            $("#module-container .list .disabled").click(function () {
                SGIS.UI.alert("你没有此权限");
            });
            $("#user .usermenu .item.disabled").click(function () {
                SGIS.UI.alert("你没有此权限");
            });
        };
        //无登录界面控制
        var logoutUI = function () {
            $("#user .aft").addClass("hide");
            $("#user .bef").removeClass("hide");
            $("#init_menu_js").remove();
            $("#module-container .list p").unbind("click").addClass("disabled");
            $("#module-container .list .disabled").click(function () {
                SGIS.UI.alert("请先登陆");
            })
            $("#user .usermenu .item.disabled").click(function () {
                SGIS.UI.alert("请先登陆");
            });
        };

        /**
         * 获取版本信息
         * @param callback
         */
        // var getVersion = function (callback) {
        //     require.async("module/common/config.version", function (data) {
        //         if (data && data.length > 0) {
        //             var value = data[0].value;
        //             var version = "Powered by " + value[value.length - 1] + " (" + value[0] + ") ";
        //             $("footer .footer span").html(version);
        //         }
        //     });
        // };

        return {
            loginUI:loginUI,
            logoutUI:logoutUI,
            // getVersion:getVersion
        }

    })();

    /**
     * 页面初始化
     */
    var init = function () {

        $('#user .ui.dropdown').dropdown();//用户管理下拉

        $("#login").click(function () {
            $('.theme-popover-mask').fadeIn(100);
            $('#login-container').slideDown(200);
        });
        $("#login-container .theme-poptit a").click(function () {
            $('.theme-popover-mask').fadeOut(100);
            $('#login-container').slideUp(200);
        });

        $("#sys-btn-logout").click(function () {
            Auth.logOut(function (q) {
                UI.logoutUI();
            });
        });

        $("#login-btn-submit").click(function () {
            var userName = $("#inp-name").val();
            var password = $("#inp-pwd").val();

            Auth.loginAction(userName,password, true,function (user) {
                //图库登录
                AutoLoginGalleryHandler.galleryLogin(user);

                //guest用户不允许修改密码 西安定制
//                if(userName =="guest"){
//                    $("#edit-pwd").addClass("hidden");
//                }else{
//                    $("#edit-pwd").removeClass("hidden");
//                }
            })
        });
        $("body").bind('keydown',function(event) {
            if(event.keyCode==13){
                var userName = $("#inp-name").val();
                var password = $("#inp-pwd").val();
                Auth.loginAction(userName,password,true, function (user) {
                    //图库登录
                    AutoLoginGalleryHandler.galleryLogin(user);
                })
            }
        });
        //修改密码
        $("#edit-pwd").click(function () {
            $("#edit-pwd-pop").slideDown(200);
        });
        $("#edit-pwd-pop .theme-poptit a").click(function () {
            $('#edit-pwd-pop').slideUp(200);
        });
        $("#btn-submit-edit").click(function () {
            var newpwd = $("#new-pwd").val();
            var chkpwd = $("#chk-new-pwd").val();
            if(newpwd!=chkpwd){
                alert("两次填写的不一致");
                $("#chk-new-pwd").val("");
                return false;
            }else{
                //密码中必须包含字母、数字、特称字符，至少6个字符，最多30个字符
                var regex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,30}');
                if(!regex.test(newpwd)){
                    alert("密码中必须包含字母、数字、特殊字符");
                    $("#new-pwd").val("");
                    $("#chk-new-pwd").val("");
                    $("#new-pwd").focus();
                    return false;
                }
                Auth.editPwd(newpwd, function () {
                    Auth.logOut();
                    window.location.reload();
                })

            }
        });

        autoMatic_gotoLogin();
    };
    /**
     * 用湖南湘江新区综合管理平台的账号自动登陆系统
     */
    var autoMatic_gotoLogin = function(){
        var url = window.login_url.system_base_url+"/app/user/getLoginInfo";
        $.ajax({
            type: "GET",
            url: url,
            dataType: "json",
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true,
            success: function(res){
                var re = res;
                var userName = re.name;
                var password = re.password;
                if(userName&&password){
                    Auth.loginAction(userName,password,false, function (user) {
                        //图库登录
                        AutoLoginGalleryHandler.galleryLogin(user);
                    });
                }
            },
            error:function (re) {
                console.log(re);
            }
        });
    };

    var Auth = (function () {
        /**
         * 验证用户是否登录
         */
        var validation = function (errorCall) {
            var url = window.login_url.base_url+"oAuth/isLogin";
            $.ajax({
                type: "GET",
                url: url,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                dataType: "text",
                success: function(res){
                    var re = JSON.parse(res);
                    if(re.status){
                        userinfo = re.user;
                        modulesPowers = re.power;
                        initModule(modulesPowers,function (){
                            UI.loginUI(userinfo);
                        });
                        //图库登录
                        AutoLoginGalleryHandler.galleryLogin(re.user);
                    }else{
                        userinfo = null;
                        modulesPowers = null;
                        errorCall&&errorCall(re);
                    }
                },
                error:function (re) {
                    console.log(re);
                }
            });

//             SGIS.API.get("oAuth/isLogin").json(function (re) {
//
//                 if(re && re.status){
//                     userinfo = re.user;
//                     modulesPowers = re.sysPowers;
//                     succCall&&succCall(re.user);
//
//                     //图库登录
//                     AutoLoginGalleryHandler.galleryLogin(re.user);
//                     //西安定制 guest不允许修改密码
// //                    if(userinfo.userName =="guest"){
// //                        $("#edit-pwd").addClass("hidden");
// //                    }else{
// //                        $("#edit-pwd").removeClass("hidden");
// //                    }
//
//                 }else{
//                     userinfo = null;
//                     modulesPowers = null;
//                     errorCall&&errorCall(re);
//                 }
//
//                 // initModule();
//                //西安默认登录
// //                if(userinfo == null){
// //                    autoGuestLogin();
// //                }
//             });
        };

        /**
         * 登录
         */
        var loginAction = function (userName,password,has_md5,callback) {
            var url = window.login_url.base_url+"oAuth/login";
            if(userName==""){
                SGIS.UI.alert("用户名不能为空");
                return false;
            }
            if(password==""){
                SGIS.UI.alert("密码不能为空");
                return false;
            }
            if(has_md5){
                password = hex_md5(password); //md5加密
            }

            $.ajax({
                type: "GET",
                url: url,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                dataType: "text",
                data: "userName="+userName+"&"+"password="+password,
                success: function(res){
                    var re = JSON.parse(res);
                    if(re && re.status){
                        userinfo = re.user;
                        modulesPowers = re.power;
                        initModule(modulesPowers,function (){
                            UI.loginUI(userinfo);
                        });
                        // UI.loginUI(re.user);
                        callback&&callback(re.user);
                    }else{
                        userinfo = null;
                        modulesPowers = null;
                        SGIS.UI.alert(re.info ? re.info : "登录失败，用户名或者密码不正确！");
                    }
                },
                error:function (re) {
                    console.log(re);
                }
            });

            // SGIS.API.get("oAuth/login").data({userName:userName,password:password}).json(function (re) {
            //     if(re && re.status){
            //         userinfo = re.user;
            //         modulesPowers = re.sysPowers;
            //         UI.loginUI(re.user);
            //         // initModule();
            //         callback&&callback(re.user);
            //     }else{
            //         userinfo = null;
            //         modulesPowers = null;
            //         SGIS.UI.alert(re.info ? re.info : "登录失败，用户名或者密码不正确！");
            //     }
            // });
        };

        /**
         * 注销登录
         *
         * @constructor
         */
        var logOut = function(callback){

            // SGIS.API.get("/oAuth/logout").data().json(function(re){
            //     callback&&callback();
            //     userinfo = null;
            //     modulesPowers = null;
            //     // initModule();
            //
            //     //图库注销
            //     AutoLoginGalleryHandler.galleryLogout();
            // });

            var url = window.login_url.base_url+"oAuth/logout";
            $.ajax({
                type: "GET",
                url: url,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                dataType: "text",
                success: function(re){
                    userinfo = null;
                    modulesPowers = null;
                    //图库注销
                    AutoLoginGalleryHandler.galleryLogout();
                    // callback&&callback();
                    close_wondow();

                },
                error:function (re) {
                    console.log(re);
                }
            });
        };

        /**
         * 修改密码
         * @param pwd
         * @param callback
         */
        var editPwd = function (pwd,callback) {
            pwd = hex_md5(pwd); //md5加密
            // SGIS.API.get("users/edit/sim").data({password:pwd}).json(function (re) {
            //     if(re.status){
            //         SGIS.UI.alert(re.msg);
            //         alert(re.msg);
            //         $('#edit-pwd-pop').slideUp(200);
            //         callback&&callback();
            //     }else{
            //         $('#edit-pwd-pop').slideUp(200);
            //     }
            // });

            var url = window.login_url.base_url+"users/edit/sim";
            $.ajax({
                type: "GET",
                url: url,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                dataType: "text",
                data: "password="+pwd,
                success: function(res){
                    var re = JSON.parse(res);
                    if(re.status){
                        SGIS.UI.alert(re.msg);
                        alert(re.msg);
                        $('#edit-pwd-pop').slideUp(200);
                        callback&&callback();
                    }else{
                        $('#edit-pwd-pop').slideUp(200);
                    }
                },
                error:function (re) {
                    console.log(re);
                }
            });
        };


        return {
            validation:validation,
            loginAction:loginAction,
            logOut:logOut,
            editPwd:editPwd
        }
    })();

    /**
     * 关闭当前窗口
     * @type {{}}
     */
    var close_wondow = function () {
        var userAgent = navigator.userAgent;
        if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Presto") != -1 || userAgent.indexOf("Chrome") !=-1) {
            window.location.replace("about:blank");
        } else {
            window.opener = null;
            window.open('','_self');
            window.close();
        }
    };
    /**
     * 自动登录
     * @type {{}}
     */
    var AutoLoginGalleryHandler = (function(){
        /**
         * 图库登录
         */
        var galleryLogin = function(userInfo){
            if(userInfo && userInfo != null){
                $.ajax({
                    url: gallery_url+"?_method=POST",
                    type: "post",
                    dataType: "text",
                    xhrFields: {
                        withCredentials: true
                    },
                    crossDomain: true,
                    data: {
                        userLogin:userInfo.userName,
                        userName:userInfo.userCaption,
                        isAdmin:parseInt(userInfo.sys_role) >= 4
                    },
                    error: function (e) {
                        console && console.dir(e);
                    },
                    success: function (re) {
                        var data = JSON.parse(re);
                        console && console.dir(data.message);
                    }
                });
            }
        };

        /**
         * 图库注销
         */
        var galleryLogout = function(){
            var url = gallery_logouturl+"?_method=GET";
            jQuery.ajax({
                url: url,
                type: "post",
                dataType: "json",
                data: {},
                error: function (e) {
                    console && console.dir(e);
                },
                success: function (re) {
                    console && console.dir(re.message);
                }
            });
        };


        return {
            galleryLogin:galleryLogin,
            galleryLogout:galleryLogout

        };
    })();

    /**
     * 根据权限初始化菜单是否可点击模块
     * @type {{}}
     */
    var initModule = function(power,callback){
        var powerdata = power;
        var js_text = '';
        for(var i in powerdata){
            if(powerdata[i].powerType == 1){
                if(powerdata[i].parid === 0){
                    var config_url = powerdata[i].powerValue;
                    js_text += "$('.app_"+powerdata[i].powerValue+"').removeClass('disabled');";
                    js_text += "$('.app_"+powerdata[i].powerValue+"').click(function(){window.location.href = app_address."+config_url +";});"
                }else{
                    for(var j in powerdata){
                        if(powerdata[j].powerid === powerdata[i].parid && powerdata[i].memo==="new" ){//需要新打开页面
                            js_text += "$('.app_"+powerdata[i].powerValue+"').removeClass('disabled');";
                            var config_url = "app_address."+powerdata[j].powerValue+"."+powerdata[i].powerValue;
                            js_text += "$('.app_"+powerdata[i].powerValue+"').click(function(){window.open("+config_url +");});"
                        }
                        if(powerdata[j].powerid === powerdata[i].parid && powerdata[i].memo !="new" ){
                            js_text += "$('.app_"+powerdata[i].powerValue+"').removeClass('disabled');";
                            var config_url = powerdata[j].powerValue+"."+powerdata[i].powerValue;
                            js_text += "$('.app_"+powerdata[i].powerValue+"').click(function(){window.location.href = app_address."+config_url +";});"
                        }
                    }
                }
            }
        }
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.id="init_menu_js";
        script.text = "var app_address_match = function () {"+js_text+"};$(function () {app_address_match();});";
        $("#module-container .list p").unbind("click");//解除之前注册的事件，不然会延用上次状态的事件
        $('body').append(script);
        callback&&callback();
    }
//     var initModule = function () {
//
//         $("#module-container").empty();
//         require.async("module/web/config.module", function (re) {
//             $("#module-container").empty();
//
//             var len = 0;
//             for(var i =0;i<re.length;i++){
//                 var md = re[i];
//                 if(md.homepage == false){
//                     continue ;
//                 }
//                 md.out = "out";  //没有登录状态
//                 md.power = false; //无权限
//
//                 if(!md.status){   // 状态为false
//                     continue;
//                 }
//                 md.goto = md.goto||false ;
//                 var power = checkModulePower(md.id);
//
//                 if( md.auth == false || (md.auth && power) ){
//                     md.out = "";
//                     md.power = true;
//                 }
//
//                 if(md.schema=="subpage"||(md.schema=="iframe"&&!md.goto)){
//                     md.url = "/web/main/base.html";
//                 }
//
//                 //md.id = idval[md.id]||md.id;
//                 var mdhtml = tpl(md);
//                 var $mdhtml = $(mdhtml);
//                 //当前module为图库
//                 if(md.id.indexOf("gallery") == 0){
//                     $mdhtml.find("a").attr("autoLoginUrl",md.autoLoginUrl);
//                 }
//                 //模块背景图片动态处理
//                 $mdhtml.find("a").css({
//                     "background": "url(assets/images/module/"+(md.id+(md.power?"":"_disabled"))+".png) center 35% no-repeat",
//                     "background-size": "45%"
//                 });
//                 $mdhtml.appendTo($("#module-container"));
//                 //$("#module-container").append(mdhtml);
//
//                 len ++;
//             }
//
//             var width = 166*len;
//             //$("#module-container").css("width",width*1.5+"px"); //根据模块多少 重新设置容器宽度
//             $(".row.clearfix.picture>div").css("min-width",(width+50)+"px");   //为图片设定最小宽度，防止其宽度小于模块框的宽度
//             Goto(); //注册事件
// //            autoGuestLogin();
//         });
//     };

    /**
     * 默认guest登录 （西安项目）
     */
    var  autoGuestLogin = function(){
       //填充用户名密码
        $("#inp-name").val("guest");
        $("#inp-pwd").val("123456");
        //开始登录
        $("#login-btn-submit").click();
    }   ;


    // var idval = {
    //     "microdata":"micro",
    //     "microsampling":"sampling",
    //     "macrodata":"macro",
    //     "sdms":"sdms",
    //     "search":"search",
    //     "gallery":"gallery",
    //     "subject":"subject"
    // };


    /**
     * 检查模块权限
     * @param id
     */
    var checkModulePower = function (id) {
        var p = false;
        var val = id;   //powerValues[id];
        if(val == 'boheli'){
            return true;
        }
        if(!modulesPowers){
            return false;
        }
        for(var i =0;i<modulesPowers.length;i++){
            var pow = modulesPowers[i];
            if(pow.value==val){
                var status = pow.status;
                if(status=="checked"){
                    p = true;
                    break;
                }
            }

        }
        return p;
    };

    /**
     * 模块跳转
     * @constructor
     */
    var Goto = function () {
        $("div.module a").click(function () {
            var module  =  $(this).attr("module");
            if(module.indexOf("boheli")<0){      //博和利跳转页面不做登陆限制
                //没有登录
                if(userinfo==null){
                    SGIS.UI.alert("您还没有登录！");
                    $("#login").click();
                    return false;
                }

                //没有权限
                var power = $(this).attr("power");
                if(power=="false"){
                    SGIS.UI.alert("您无权访问此模块，请联系管理员！");
                    return false;
                }
            }
            var url = $(this).attr("src");
            var goto  = $(this).attr("goto")=="true";
            var schema = $(this).attr("schema") ;

            var loc = url;

            if(url.indexOf("http://") ==-1 ){
                loc  = SGIS.Util.getBaseUrl() +   url ;
            }
            function openUrl(_url,_goto){
                if(_goto){
                    window.open(_url) ;
                }
                else{
                    location.href =  _url ;
                }
            }

            //为产品的子模块  或者外部模块嵌入iframe展示
            if(schema== "subpage" || (schema=="iframe"&&!goto)){
                var ticket = "m" +  Math.floor(Math.random() * ( 10000000 + 1)); // 生成一个随机的号
                loc+="?md=" + ticket;
                url = SGIS.Util.getBaseUrl() + "/base/skip?md="+module;
                $.get(url, function (re) {
                    openUrl(loc,goto) ;
                });
                return ;
            }
            //图库另外处理
            if(module.indexOf("gallery") == 0){
                var autoLoginUrl = $(this).attr("autoLoginUrl");
                if(autoLoginUrl && autoLoginUrl != ""){
                    SGIS.UI.alert("正在进入图库，请稍后...","info");
                    jQuery.ajax({
                        url: autoLoginUrl+"?_method=POST",
                        type: "post",
                        dataType: "json",
                        data: {
                            userLogin:userinfo.userName,
                            userName:userinfo.userCaption,
                            isAdmin:parseInt(userinfo.sys_role) >= 4
                        },
                        error: function (e) {
                            SGIS.UI.alert("图库对接配置错误！请联系管理员！","dange");
                        },
                        success: function (re) {
                            if(re && re.code == 0){
                                openUrl(url,goto) ;
                            }else{
                                alert(re.message);
                            }
                        }
                    });
                }else{
                    openUrl(url,goto) ;
                }
            }else{
                openUrl(url,goto) ;
            }//end if(module.indexOf("gallery") == 0)
        });
    };

    var resize = function () {
        var a = $("body").width();

    };


    $(function () {
        init();
        Auth.validation(function () {
            UI.logoutUI();
            $("#login").click();  //自动弹出登录框
            $("#login-btn-submit").focus();
        });

        $(window).resize(SGIS.Util.throttle(function(){
            resize();
        }, 200)).resize();


    });
});

